package com.zhiyou100.util.data;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author yang yang yang 杨磊
 * @description Date 日期工具类
 */
public class DateUtil {
    /**
     * 默认格式 yyyy-MM-dd HH:mm:ss
     */
    private static final SimpleDateFormat SDF =
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * @return java.lang.String
     * date to String
     * @name date2Str
     * @param: [d]
     * @date 8/1/20 17:29
     * @author yang yang yang yang
     */
    public static synchronized String dateToStr(Date d) {
        return SDF.format(d);
    }

    /**
     * 根据 mode 格式化一个 date
     *
     * @param d    日期
     * @param mode 格式
     * @return 格式化后的日期
     */
    public static synchronized String dateToStr(Date d, String mode) {
        return new SimpleDateFormat(mode).format(d);
    }


    /**
     * @return java.util.Date
     * Date to String 指定格式
     * @name str2Date
     * @param: [s]
     * @date 8/1/20 17:29
     * @author yang yang yang yang
     */
    public static synchronized Date strToDate(String s) {
        try {
            return SDF.parse(s);
        } catch (Exception e) {
            throw new RuntimeException(s + "的格式与：yyyy-MM-dd HH:mm:ss不匹配");
        }
    }

    /**
     * 根据 指定的格式把一个字符格式化
     *
     * @param s    要转为日期的字符串
     * @param mode 指定的日期格式
     * @return 格式化后的日期
     */
    public static synchronized Date strToDate(String s, String mode) {
        try {

            return new SimpleDateFormat(mode).parse(s);
        } catch (Exception e) {
            throw new RuntimeException(s + "的格式与：" + mode + "不匹配");
        }
    }

    /**
     * @return java.util.Date
     * Sql date 转 util date
     * @name SqlDateToDate
     * @param: [date]
     * @date 8/1/20 17:35
     * @author yang yang yang yang
     */
    public static Date sqlDateToDate(java.sql.Date date) {
        return new Date(date.getTime());
    }

    /**
     * @return java.sql.Date
     * date 转 sql date
     * @name dateToSqlDate
     * @param: [date]
     * @date 8/2/20 15:05
     * @author yang yang yang yang
     */
    public static java.sql.Date dateToSqlDate(Date date) {
        return new java.sql.Date(date.getTime());
    }


}
